#ifndef __ADMIN_H__
#define __ADMIN_H__

enum MENU_LOGIN
{
    LOGIN = 1, // 登录
    ENROLL     // 注册
};

typedef struct Admin
{
    char username[10];
    char password[10];
    int privilege; // 权限 0:普通用户 1:管理员
} Admin_t, *Admin_p;

typedef struct Admin_Node
{
    Admin_p data;
    struct Admin_Node *next;
    struct Admin_Node *prev;
} Admin_Node_t, *Admin_Node_p;

Admin_Node_p admin_Init();                                             // 初始化管理员节点
Admin_Node_p adminNode_Create();                                       // 创建节点
Admin_Node_p find_adminNode(Admin_Node_p admin_head, int index);       // 查找指定索引的节点
int getAdminIndex_ByUserName(Admin_Node_p admin_head, char *username); // 通过账号名查找管理员节点
void insertTail_adminNode(Admin_Node_p admin_head);                    // 插入尾节点
int getAdminCount(Admin_Node_p admin_head);                            // 获取账号数量
Admin_p scanf_admin(Admin_Node_p admin_head);                          // 输入新的账号密码

void printf_login_menu();                                            // 打印登录菜单函数
int menuOperate_login(int menu, Admin_Node_p admin_head);            // 执行登录菜单
char *getPrivilege(int privilege);                                   // 获取权限
void enroll(Admin_Node_p admin_head);                                // 注册
int login(Admin_Node_p admin_head);                                  // 登录
int verify(Admin_Node_p admin_head, char *username, char *password); // 验证账号是否存在以及密码是否正确
void show_allAdmin(Admin_Node_p admin_head);                         // 显示所有管理员信息
void give_privilege(Admin_Node_p admin_head);                        // 权限管理
void authorization(Admin_Node_p currNode, char *username);           // 授权

#endif
